﻿namespace WinFormsApp1
{
    using System.Data;

    public partial class Form1 : Form
    {
        private string input = "";     // 存储当前表达式
        private string operand1 = "";  // 第一个操作数
        private string operand2 = "";  // 第二个操作数
        private char operation;        // 当前运算符
        private bool isResultShown = false; // 是否刚显示过结果

        public Form1()
        {
            InitializeComponent();
        }

        // 数字按钮点击事件
        private void Number_Click(object sender, EventArgs e)
        {
            if (isResultShown)
            {
                textDisplay.Text = "";
                input = "";
                isResultShown = false;
            }

            Button btn = (Button)sender;
            input += btn.Text;
            textDisplay.Text = input;
        }

        // 运算符按钮点击事件
        private void Operator_Click(object sender, EventArgs e)
        {
            if (input == "") return;

            Button btn = (Button)sender;
            operand1 = input;
            operation = btn.Text[0];
            input += btn.Text;
            textDisplay.Text = input;
        }

        // 等号按钮点击事件
        private void btnEqual_Click(object sender, EventArgs e)
        {
            try
            {
                string expression = input;

                // 替换符号为标准表达式符号
                expression = expression.Replace("×", "*").Replace("÷", "/").Replace("−", "-");

                // 使用 DataTable 来计算表达式
                var result = new DataTable().Compute(expression, null);

                input += "=" + result.ToString();
                textDisplay.Text = input;
                isResultShown = true;
            }
            catch
            {
                textDisplay.Text = "输入错误";
                input = "";
            }


            // 初始版本：只能处理 + - * / 一个运算符和两个操作数的表达式
            //try
            //{
            //    int opPos = input.IndexOfAny(new char[] { '+', '−', '×', '÷' });
            //    if (opPos == -1) return;

            //    operand1 = input.Substring(0, opPos);
            //    operand2 = input.Substring(opPos + 1);

            //    double num1 = double.Parse(operand1);
            //    double num2 = double.Parse(operand2);
            //    Console.WriteLine("num1:",num1);
            //    Console.WriteLine("num2:",num2);
            //    double result = 0;

            //    switch (operation)
            //    {
            //        case '+': result = num1 + num2; break;
            //        case '−': result = num1 - num2; break;
            //        case '×': result = num1 * num2; break;
            //        case '÷':
            //            if (num2 == 0)
            //            {
            //                textDisplay.Text = "除数不能为0";
            //                return;
            //            }
            //            result = num1 / num2;
            //            break;
            //        default:
            //            textDisplay.Text = operation.ToString();
            //            return;
            //    }

            //    input += "=" + result.ToString();
            //    textDisplay.Text = input;
            //    isResultShown = true;
            //}
            //catch
            //{
            //    textDisplay.Text = "输入错误";
            //    input = "";
            //}
        }

        // 清除按钮点击事件
        private void btnClear_Click(object sender, EventArgs e)
        {
            input = "";
            operand1 = "";
            operand2 = "";
            textDisplay.Text = "";
        }

    }
}
